'''
 ex10-5案例：pandas读取sqlite数据库中的数据
'''
#1.导入sqlite3、pandas库以及pandas提供的read_sql函数
import sqlite3
import pandas as pd
from pandas.io.sql import read_sql
from matplotlib import pyplot as plt

#2.建立与sqlite数据库的连接，返回连接对象
conn = sqlite3.connect('LJHouse.db')

#3.调用pandas的read_sql方法，参数包括sql查询语句，和连接对象conn，返回Dataframe对象
rows=pd.read_sql("select * from ershfang",con=conn)
print(type(rows))

#4.调用pandas的Dataframe方法，构造DataFrame结构数据
df=pd.DataFrame(rows)

#打印预览数据
print(df)

#6.计算房屋单价列
df['House_unitPrice']=df['House_zj']/df['House_mj']*10000
#使用iloc函数给定前5行，i表示index，即行索引
print(df['House_unitPrice'].iloc[0:5])

#6.对所有数据列按单价降序排序
df.sort_values('House_unitPrice',inplace=True,ascending=False)

#7.制作条形图，x轴为单价，y轴为所在的小区和街道或地区
x_data=df['House_unitPrice'][:20]
y_data=+df['House_addr'][:20]+'-'+df['House_name'][:20]
# 调用plt的subplot方法，返回ax轴和fg图对象
fg,ax = plt.subplots()
#绘制横向的柱状图
ax.barh(y_data,x_data,color="orange")
#y轴刻度翻转
ax.invert_yaxis()
#设置图标题和x轴标题
ax.set_title('天津地区房屋单价前20名')
ax.set_xlabel('房屋单价(元)')
plt.show()

#8.对所有数据列按关注度降序排序
df.sort_values('House_gz',inplace=True,ascending=False)

#9.制作条形图，x轴为单价，y轴为所在的小区和街道或地区
x_data=df['House_gz'][:20]
y_data=+df['House_addr'][:20]+'-'+df['House_name'][:20]
# 调用plt的subplot方法，返回ax轴和fg图对象
fg,ax = plt.subplots()
#绘制横向的柱状图
ax.barh(y_data,x_data,color="green")
#y轴刻度翻转
ax.invert_yaxis()
#设置图标题和x轴标题
ax.set_title('天津地区二手房关注度前20名')
ax.set_xlabel('关注人数')
plt.show()